#include "gkt_board.h"
#include "gkt_debug.h"
#include "gkt_gpio.h"
#include "door_common.h"

#if defined(GKT_CONFIG_DOOR_LOCK_ENABLE) && GKT_CONFIG_DOOR_LOCK_ENABLE \
	&& (GKT_DOOR_LOCK_LOCATION == GKT_MODULE_LOC_FRONTBOARD)	\
	&& (defined(GKT_CONFIG_DOOR_LOCK_AUTOMATIC) && GKT_CONFIG_DOOR_LOCK_AUTOMATIC) \
	&& (DOOR_LOCK_MOTOR_DRVIC == DOOR_LOCK_MOTOR_DRVIC_TMI8260)

#if !defined(GKT_CONFIG_DOOR_LOCK_MOTOR_IN1_GPIO_PIN) \
	|| !defined(GKT_CONFIG_DOOR_LOCK_MOTOR_IN2_GPIO_PIN)
#error "not define MOTOR_IN_GPIO_PIN"
#endif

int door_lock_motor_rotate_forward(void)
{
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN1_GPIO_PIN, 1);
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN2_GPIO_PIN, 0);

	return GKT_SUCCESS;
}
int door_lock_motor_rotate_reverse(void)
{
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN1_GPIO_PIN, 0);
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN2_GPIO_PIN, 1);

	return GKT_SUCCESS;
}
void door_lock_motor_rotate_brake(void)
{
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN1_GPIO_PIN, 1);
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN2_GPIO_PIN, 1);
}
void door_lock_motor_rotate_stop(void)
{
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN1_GPIO_PIN, 0);
	gkt_gpio_set_pin_level(GKT_CONFIG_DOOR_LOCK_MOTOR_IN2_GPIO_PIN, 0);
}
void door_lock_motor_reset(void)
{
	door_lock_motor_rotate_stop();
}

int door_lock_motor_init(void)
{
	gkt_gpio_config(GKT_CONFIG_DOOR_LOCK_MOTOR_IN1_GPIO_PIN, 
			GKT_GPIO_F_OUTPUT, NULL);
	gkt_gpio_config(GKT_CONFIG_DOOR_LOCK_MOTOR_IN2_GPIO_PIN, 
			GKT_GPIO_F_OUTPUT, NULL);

	door_lock_motor_reset();

	return GKT_SUCCESS;
}

#endif

